26 research outputs found

    Teaching Design Patterns Using Interactive Methods

    Get PDF
    Even though design patterns are one of the most important building blocks in the current software engineering ecosystem, computer science and software engineering graduates face trouble applying these patterns. To address this, we propose a tutorial and an online lab assessment method to solidify the idea of design patterns for students. The tutorial part integrates a live coding session. The online lab assessment consists of a three-stage process (designing a solution using a class diagram, peer review, and implementation) where students are expected to come up with a fully working solution using design patterns. The proposed approach is applied twice over two semesters to a total sum of 196 students. We discuss the effects of these interactive educational methods on learning by comparing pre-surveys, post-surveys and analyzing final grades. The analysis of the surveys shows that live coding is highly beneficial in enhancing the understanding of design patterns

    Closing the gap between software engineering education and industrial needs

    Get PDF
    According to different reports, many recent software engineering graduates often face difficulties when beginning their professional careers, due to misalignment of the skills learnt in their university education with what is needed in industry. To address that need, many studies have been conducted to align software engineering education with industry needs. To synthesize that body of knowledge, we present in this paper a systematic literature review (SLR) which summarizes the findings of 33 studies in this area. By doing a meta-analysis of all those studies and using data from 12 countries and over 4,000 data points, this study will enable educators and hiring managers to adapt their education / hiring efforts to best prepare the software engineering workforce

    Evaluating the Code Quality of AI-Assisted Code Generation Tools: An Empirical Study on GitHub Copilot, Amazon CodeWhisperer, and ChatGPT

    Full text link
    Context: AI-assisted code generation tools have become increasingly prevalent in software engineering, offering the ability to generate code from natural language prompts or partial code inputs. Notable examples of these tools include GitHub Copilot, Amazon CodeWhisperer, and OpenAI's ChatGPT. Objective: This study aims to compare the performance of these prominent code generation tools in terms of code quality metrics, such as Code Validity, Code Correctness, Code Security, Code Reliability, and Code Maintainability, to identify their strengths and shortcomings. Method: We assess the code generation capabilities of GitHub Copilot, Amazon CodeWhisperer, and ChatGPT using the benchmark HumanEval Dataset. The generated code is then evaluated based on the proposed code quality metrics. Results: Our analysis reveals that the latest versions of ChatGPT, GitHub Copilot, and Amazon CodeWhisperer generate correct code 65.2%, 46.3%, and 31.1% of the time, respectively. In comparison, the newer versions of GitHub CoPilot and Amazon CodeWhisperer showed improvement rates of 18% for GitHub Copilot and 7% for Amazon CodeWhisperer. The average technical debt, considering code smells, was found to be 8.9 minutes for ChatGPT, 9.1 minutes for GitHub Copilot, and 5.6 minutes for Amazon CodeWhisperer. Conclusions: This study highlights the strengths and weaknesses of some of the most popular code generation tools, providing valuable insights for practitioners. By comparing these generators, our results may assist practitioners in selecting the optimal tool for specific tasks, enhancing their decision-making process

    An Interactive Approach to Teaching Git Version Control System

    Get PDF
    Although the Git version control system is widely used in software engineering, it has been observed that most Computer Science and Software Engineering students do not have the necessary knowledge and practices to use Git. To address this issue, we have prepared a Git and GitHub training program consisting of four sessions as a part of the Object-Oriented Software Engineering course where junior students utilized these tools for their term projects. The program was conducted in three academic terms for a total of 258 students. To evaluate the effectiveness of the training sessions, we have conducted two surveys, before (224 respondents) and after (200 respondents) the program. According to the survey results, the number of students considering themselves insufficient to use the tools for their projects decreased from 67% to 9% after the training program. Additionally, the majority of the students found the lectures and laboratory assignments beneficial

    Examining reward mechanisms for effective usage of application lifecycle management tools

    Get PDF
    Application lifecycle management (ALM) highlights the rules of the road for the entire software ecosystems’ lifecycle. Successful ALM enables clarity around the entire delivery effort, from defining requirements to deploying the software product. One of the challenges in software engineering today is to orchestrate ALM tools to a set of software projects effectively. In particular, it is challenging for software practitioners to continuously fully engage with the tasks that are assigned to them. The goal of this study is to address such situations using a game theoretic approach by utilizing a reward mechanism, which we intent to test in a medium-sized software development organization. Based on a set of game elements, this study proposes an auction mechanism to address human resource allocation and task optimization issues, and consequently tackle the potential problem of software practitioners’ engagement

    An auction-based serious game for bug tracking

    Get PDF
    Today, one of the challenges in software engineering is utilizing application lifecycle management (ALM) tools effectively in software development. In particular, it is hard for software developers to engage with the work items that are appointed to themselves in these ALM tools. In this study, we have focused on bug tracking in ALM where one of the most important metrics is mean time to resolution that is the average time to fix a reported bug. To improve this metric, we developed a serious game application based on an auction-based reward mechanism. The ultimate aim of this approach is to create an incentive structure for software practitioners to find and resolved bugs that are auctioned where participants are encouraged to solve and test more bugs in less time and improve quality of software development in a competitive environment. We conduct hypothesis tests by performing a Monte Carlo simulation. The preliminary results of this research support the idea that using a gamification approach for an issue tracking system enhances the productivity and decreases mean time to resolution

    Manipulating multiple sequence alignments via MaM and WebMaM

    Get PDF
    MaM is a software tool that processes and manipulates multiple alignments of genomic sequence. MaM computes the exact location of common repeat elements, exons and unique regions within aligned genomics sequences using a variety of user identified programs, databases and/or tables. The program can extract subalignments, corresponding to these various regions of DNA to be analyzed independently or in conjunction with other elements of genomic DNA. Graphical displays further allow an assessment of sequence variation throughout these different regions of the aligned sequence, providing separate displays for their repeat, non-repeat and coding portions of genomic DNA. The program should facilitate the phylogenetic analysis and processing of different portions of genomic sequence as part of large-scale sequencing efforts. MaM source code is freely available for non-commercial use at ; and the web interface WebMaM is hosted at

    Yazılım ürün hattı mühendisliğine geçiş için bir karar destek modeli.

    No full text
    The software product line engineering (SPLE) community has provided several different approaches for assessing the feasibility of SPLE adoption and selecting transition strategies. These approaches usually include many rules and guidelines which are very often implicit or scattered over different publications. Hence, for the practitioners it is not always easy to select and use these rules to support the decision-making process. To support the decision-making process in SPLE adoption, a decision support model is introduced for pursuing SPLE transition. A prototype tool, Transit-PL is developed after a domain analysis study on the feasibility analysis approaches and SPLE transition strategies in the literature. The decision support model has been developed and enhanced through exploratory case studies, and then further validated in both literature-based retrospective case studies and real life prospective case studies. The multiple case study validation showed that proposed decision support model has a clear impact on the decision-making process in SPLE adoption.Ph.D. - Doctoral Progra

    Sentez Tabanlı Yazılım Mimarisi Tasarım Yaklaşımının Essence Çerçevesiyle Modellenmesi

    No full text
    Software architecture design is a pivotal yet a difficult phase in software development process. It is important to manage conflicting goals of the stakeholders and derive architectural abstractions from the relevant requirements. Moreover, it is significant to produce semantically rich artifacts based on the existing solution domain knowledge. Resulting architectural artifacts guides the rest of the software development process and facilitates planning. Recently the Essence framework has been proposed to provide an abstract and general view of software engineering on which software development methods and activities can be mapped. In this work, a mapping of the synthesis-based software architecture design activities to the Essence framework is presented. By doing so, these activities are explained using an abstract and general model of software engineering. Moreover, a state-based activity tracking mechanism for synthesis-based software architecture design activities is proposed. The lessons learnt about the Essence framework and the synthesis-based architecture design approach are reported
    corecore